This invention relates generally to the field of computer systems and more specifically to a program architecture.
With the advent of networked computing, it has become possible for various types of computing systems in different locations to share information and programming tools. Programs that are executing on one system may be able to access data or programs that are located on local or remote systems. For example, the introduction of the Internet has allowed web-capable devices to access data from systems located anywhere in the world.
One common problem associated with allowing programs to share information is managing the interfaces within and between the programs. Any given program can be said to include three components: a user interface, program functionality and data source. Each new program defines its own protocols and includes various routines for enabling the exchange of information between these three components. Thus, any program may be viewed as a set of separate routines. The quality of each of the routines and the interface between these routines is often inconsistent. Because there is typically no uniform interface between these routines, it is often difficult to extend the functionality of the program or tailor the operation of the program to a specific need. Thus, this non-uniform approach to routine development adversely effects the flexibility of the program at an intra-program level.
In addition, the lack of uniformity in program design adversely effects the flexibility of inter-program communication. At any given time during operation, a system may be accessing any number of local and remote programs. Frequently, it is desirable to transfer data between such programs. However, because each program may have different interface protocols, it is often a complex process to share data between programs. Often, in order to effectively share data between programs, the system user has to be educated as to the protocols of each of the independent programs, making it difficult for an uneducated user to optimally use the system programs.
Another problem with the current program design technique is the inherent waste of storage and programming resources. Each program is generally packaged as a unit, with all of the necessary routines provided within the package. When many programs are loaded on the system, each of the many programs may include substantially identical routines. The presence of multiple, identical routines within the system increases the storage requirements for the system. In addition, the time required for program developers to develop identical routines is a waste of programming resources.
It would be desirable to develop a program design framework that facilitates program modification and inter-program communication as well as reduce the unnecessary utilization of programming resources.
A program framework for use in a networked system includes an abstract, protocol-independent storage system in which data sources are stored. The storage system is abstract because it includes data stored anywhere in the networked system, yet references to the data appear to the user as references to a local storage system. Associated with each data source is one or more views, where a view is a user defined logical interface for accessing the data source. The view is mapped to an implementation which identifies either or both of a communication protocol for accessing the data source and one or more tasks to be performed on the data source. As such, the logical interface to the data source is separated from the methods for implementing accessing or operating the resource. A programmer accesses data using one of the available views of the data. The functionality of the system may be easily expanded by adding different views to the data sources. In addition, because any program may access a data source using any of the available views, information can be seamlessly transferred between programs, thereby significantly reducing inter-program communication difficulties.
Within this program framework, a program may be defined as a collection of menu items, views, program modules and protocols related to the data sources. The menu items, views, program modules, protocols and data sources are all resources that are provided in the program framework. Associated with each of the resources is a name which provides a logical interface to the resource. In one embodiment, the name is a data structure and includes a pointer to an object associated with the resource and mapping information for associating the name with a handler that implements a protocol for retrieving the object. References to a resource are made using only the logical name. As a result, the implementation details involved with accessing the resource are transparent to the user. By separating interface from implementation, the program framework is capable of providing a common and consistent interface to both local and network resources.
According to a first aspect of the invention, a method of logically accessing a plurality of different resources using a common interface is provided. Each of the plurality of resources is physically accessed using a different protocol. The method includes the steps of, for each of the resources, providing a module associated with an implementation of the protocol associated with the resource providing a logical identifier associated with an interface to the resource, wherein the logical identifier is mapped to the module associated with the implementation of the protocol, and wherein references to the resource are made using only the logical identifier such that the implementation of the protocol associated with the resource is maintained separately from the interface.
According to another aspect of the invention, a method of generating a program for operation in a program framework includes the steps of A method of generating a program for operation in a program framework comprising the steps of identifying a data source to be accessed by the program, the data source represented by a model, generating at least one view of the model, wherein the view provides a logical interface for referencing the model and wherein the view is mapped to a handler for implementing a retrieval of the data source represented by the model, and mapping the view to the model.
According to another aspect of the invention, a program stored on a computer readable medium includes a hierarchically ordered plurality of namespaces, each namespace associated with at least one group of resources available to a program, each namespace comprising a plurality of names, each one of the plurality of names providing a logical interface to one of the resources in the at least one group, wherein each name is a data structure including a pointer to an object associated with the one of the resources in the at least one group and a mapping to a routine for implementing the retrieval of the associated object from an abstract storage system. According to a further aspect of the invention, a program framework includes a data storage system, a logical interface to the data storage system, a physical interface to the data storage system, wherein the logical interface is mapped to the logical interface, and a graphical user interface for providing access to the data storage system using only the logical interface.